const fs = require('fs')
const path = require('path')
const { Document, Packer, Paragraph, ImageRun } = require('docx')
const size = 33

// 大图片路径
const imagePath = path.join(__dirname, 'large_image.png')

// 读取图片数据
const imageBytes = fs.readFileSync(imagePath)

// 生成指定大小的 Word 文件
;(async () => {
  // 创建一个新的文档
  const doc = new Document({ sections: [] })

  // 目标Word文件大小
  const targetSize = size * 1024 * 1024 // 35 MB
  let currentSize = 0

  while (currentSize < targetSize) {
    // 创建包含图片的段落并添加到文档中
    const image = new ImageRun({
      data: imageBytes,
      transformation: {
        width: 600, // 你可以调整图片宽度
        height: 800, // 你可以调整图片高度
      },
    })

    const paragraph = new Paragraph({
      children: [image],
    })

    doc.addSection({ children: [paragraph] })

    // 使用Packer打包文档并计算当前大小
    const buffer = await Packer.toBuffer(doc)
    currentSize = buffer.length

    console.log(`当前文件大小: ${(currentSize / (1024 * 1024)).toFixed(2)} MB`)
  }

  // 保存Word文件
  const outputPath = `${size}MB_file.docx`
  const buffer = await Packer.toBuffer(doc)
  fs.writeFileSync(outputPath, buffer)

  console.log(`Word文件生成完毕，大小接近${size}MB。`)
})()
